package com.zzyl.common.utils;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

/**
 * 身份证工具类
 */
public class IdCardUtil {

    /**
     * 根据身份证号码计算年龄
     * 
     * @param idCard 身份证号码
     * @return 年龄
     */
    public static int getAgeByIdCard(String idCard) {
        if (idCard == null || idCard.trim().length() < 14) {
            throw new IllegalArgumentException("无效的身份证号码");
        }
        
        // 获取出生日期字符串
        String birthDateStr;
        if (idCard.length() == 18) {
            // 18位身份证
            birthDateStr = idCard.substring(6, 14);
        } else if (idCard.length() == 15) {
            // 15位身份证
            birthDateStr = "19" + idCard.substring(6, 12);
        } else {
            throw new IllegalArgumentException("无效的身份证号码长度");
        }
        
        // 解析出生日期
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        LocalDate birthDate = LocalDate.parse(birthDateStr, formatter);
        
        // 计算年龄
        return LocalDate.now().getYear() - birthDate.getYear();
    }
}
